Non-volatile memories (NVMs) have been used as auxiliary storage devices or storages in recent information processing systems. Non-volatile memories are broadly divided into flash memories for data access in units of large data sizes and non-volatile random access memories (Non-volatile RAMs) to which high-speed random access is possible in units of smaller data sizes. Here, NAND flash memories are exemplified as a representative example of flash memories. On the other hand, resistance RAMs (ReRAMs), phase-change RAMs (PCRAMs), magnetoresistive RAMs (MRAMs), and the like are exemplified as examples of non-volatile random access flash memories.
It is known that, in non-volatile memories, memory cells suffer deterioration according to progress of repetitive access and aging deterioration, which causes errors to occur in written data. Thus, a memory controller that performs a process of re-writing data in memory cells that have undergone deterioration as a refresh process has been proposed (for example, refer to Patent Literature 1). The memory controller reads data from memory cells, corrects an error in the data using an error detection and correction code (ECC), and writes the corrected data again in a refresh process. By performing re-writing on memory cells in which an error has occurred through such a refresh process, deterioration of the memory cells can be recovered to some extent.